Spatial data

Lots of data in our field(s) are inherently spatial

R has lots of tools for interacting with and analyzing spatial data

the sp package

The sp package is the workhorse of spatial mapping and analysis in R.

It defines spatial classes (e.g. SpatialPoints, SpatialPointsDataFrame) that make it possible to work with spatial data.

actual spatial data versus coordinates

We often just have coordinate data, but this works differently in R from fully spatial data

myCoords <- data.frame(long = runif(20, min=35, max=36), lat = runif(20, min = 3, max=5))
plot(myCoords)

making spatial objects

You can use the SpatialPoints() function to make your coordinates into a fully spatial object

Warning: This function will assume that your columns are in the order: X coordinate, Y Coordinate

For a gold star: Which is the x and which is the y when we are dealing with latitude and longitude?

library(sp)
spMyCoords <- SpatialPoints(coords = myCoords)

Now there are a plethora of spatial things you can do with these points that you couldn't before

bbox(spMyCoords)
##            min       max
## long 35.009496 35.923433
## lat   3.079992  4.984301

making spatial objects

plot(spMyCoords, axes=TRUE)

maps

The maps package provides basic maps that can serve as a backdrop to your points

library(maps)
world <- map(database = "world")

maps

This is not an accurate election map!

USA <- map(database="state", fill=TRUE, col=c("red","blue"))

maps

kenya <- map(database = "world", region="Kenya")

Challenge

Plot the spCoords points as solid blue filled circles on top of the Kenya map

RGoogleMaps

library("RgoogleMaps")
GW <- GetMap(center = c(38.899, -77.049), zoom = 17)
PlotOnStaticMap(GW)

RGoogleMaps

GWSatellite <- GetMap(center = c(38.899, -77.049), zoom = 17, maptype = "satellite")
PlotOnStaticMap(GWSatellite, lon=-77.0493, lat=38.899, pch=16, col="red", cex=2)

Challenge

Get a satellite image of Africa, and plot a blue + symbol on Khartoum

GIS in R

You can do almost anything in R that you can do in ArcGIS.

This is accomplished through additional packages, notably rgdal which is an R interface to the Geospatial Data Abstraction Library (GDAL), which is a great piece of open source software for spatial analysis. GDAL is the brains behind QGIS.

The spatstats package also implements a variety of spatial statitics.